# -*- coding: utf-8 -*-
import ConfigParser
import os
import codecs
import shelve

import pystore.core.framework.os2 as os2

def restoreDefault():
    """
    restoreDefault()
   
    恢复为缺省配置
    """
    __write(defaultConfig)
    __clear(runtimeConfig)
    __read(runtimeConfig)


def save():
    """保存runtimeConfig"""
    __write(runtimeConfig)
    

def __write(config):
    """
    __write(ConfigParser config)
    
    根据指定的config实例写入其内容到配置文件
    """
    os2.makeFileDirs(__configFilePath)

    f=codecs.open(__configFilePath, "w+", "utf-8")
    config.write(f)
    f.close()
    
def __read(config):
    """
    __read(ConfigParser config)
    
    读取配置文件到指定的config实例中
    """
    if not os.path.exists(__configFilePath):
        return 
    
    f=codecs.open(__configFilePath, "r", "utf-8")
    config.readfp(f,__configFilePath)
    f.close()

def __clear(config):
    """
    __clear(ConfigParser config)
    
    清除指定config内容,但不保存config,请另行保存
    """
    for s in config.sections():
        config.remove_section(s)
        


def openProjectsDb():
    """
    提供shelve.open的便利访问，返回和shelve.open一样
    需要客户程序自己close
    """
    projectsPath=os.path.join(_workspacePath,u"projects.db")
    os2.makeFileDirs(projectsPath)
    result=shelve.open(projectsPath)
    return result

#项目中用到的路径
_workspacePath=ur'workspace'
_mementoDbFilePath=os.path.join(_workspacePath,u"memento.db")
__configFilePath=os.path.join(_workspacePath,u"config.ini")

#---init default config
defaultConfig=ConfigParser.SafeConfigParser()#缺省配置,不应该擅自保存,因为可能会覆盖运行时配置"""
runtimeConfig=ConfigParser.SafeConfigParser()#运行时配置,应及时保存
defaultConfig.add_section(u'login')
defaultConfig.set(u'login', u'isRememberPassword', u'False')

#---init runtime Config
if not os.path.exists(__configFilePath):
    restoreDefault()
else: 
    __read(runtimeConfig)

if __name__=='__main__':
    restoreDefault()
    print 'has isRememberPassword:',runtimeConfig.has_option('login', 'isRememberPassword')
    print 'isRememberPassword:',runtimeConfig.get('login', 'isRememberPassword')

#    a= u'陈鹏到此一游'
#    print a.encode('utf-8')
#    print a.encode('gbk')